package com.adingxiong.cft.design.abstractfactory;

/**
 * @ClassName Test
 * @Description 抽象工厂模式（Abstract Factory Pattern）是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。
 *
 * 在抽象工厂模式中，接口是负责创建一个相关对象的工厂，不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
 * @Author xiongchao
 * @Date 2021/1/7 15:29
 **/
public class Test {

    public static void main(String[] args) {
        AbstractFactory color = FactoryProduce.getFactroy("color");
        if(color != null) {
            Color blue = color.getColor("blue");
            blue.color();
            Color red = color.getColor("red");
            red.color();
            Color yellow = color.getColor("yellow");
            yellow.color();
        }

        AbstractFactory shape = FactoryProduce.getFactroy("shape");
        if(shape != null) {
            Shape circle = shape.getShape("circle");
            circle.draw();
            Shape square = shape.getShape("square");
            square.draw();
            Shape reatangle = shape.getShape("rectangle");
            reatangle.draw();
        }
    }
}
